package com.isoftstone.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Component
public class FileUploadUtil {
    // 从配置文件读取存储路径
    @Value("${file.upload.path}")
    private String uploadPath;

    // 保存文件，返回“文件在服务器的相对路径”（如 /static/avatar/xxx.png）
    public String saveAvatar(MultipartFile file, String studentNo) throws IOException {
        // 1. 验证文件：非空 + 是图片
        if (file.isEmpty() || !file.getContentType().startsWith("image/")) {
            throw new RuntimeException("请上传有效的图片文件");
        }

        // 2. 生成唯一文件名（避免覆盖，格式：学号_随机UUID.原后缀）
        String originalFilename = file.getOriginalFilename();
        String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); // 后缀（.png/.jpg）
        String uniqueFileName = studentNo + "_" + UUID.randomUUID() + suffix; // 如 20250310_123e4567-e89b-12d3-a456-426614174000.png

        // 3. 创建存储目录（若不存在）
        File uploadDir = new File(uploadPath);
        if (!uploadDir.exists()) {
            uploadDir.mkdirs();
        }

        // 4. 保存文件到服务器目录
        File destFile = new File(uploadPath + uniqueFileName);
        file.transferTo(destFile);

        // 5. 返回“可访问的相对路径”（后续拼接服务器域名就是完整URL）
        return "/profile/" + uniqueFileName;
    }
}
